//package fnic.prehand.action;
//
//import java.io.ByteArrayOutputStream;
//import java.io.IOException;
//import java.text.DateFormat;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Map;
//
//import org.apache.log4j.Logger;
//import org.elasticsearch.action.bulk.BulkItemResponse;
//import org.elasticsearch.action.bulk.BulkRequestBuilder;
//import org.elasticsearch.action.bulk.BulkResponse;
//import org.elasticsearch.client.Client;
//import org.elasticsearch.common.xcontent.XContentFactory;
//import org.elasticsearch.common.xcontent.XContentHelper;
//import org.elasticsearch.common.xcontent.XContentType;
//import org.elasticsearch.common.xcontent.json.JsonXContent;
//import org.elasticsearch.common.xcontent.json.JsonXContentGenerator;
//import org.elasticsearch.common.xcontent.json.JsonXContentParser;
//import org.elasticsearch.node.NodeBuilder;
//
//import fnic.jsontrans.DeviceId;
//import fnic.jsontrans.ErrorCode;
//import fnic.jsontrans.FieldTypeName;
//import fnic.jsontrans.JHCdmaResult;
//import fnic.jsontrans.JHCellIdResult;
//import fnic.jsontrans.ObjectTestResult;
//import fnic.jsontrans.PCJsonToCtrl;
//import fnic.jsontrans.PhoneJsonToCtrl;
//import fnic.jsontrans.ProbeAddress;
//import fnic.jsontrans.SubjectDescript;
//import fnic.prehand.augment.Flow;
//import fnic.prehand.common.AgentConfig;
//import fnic.prehand.common.HttpMsgService;
//import fnic.prehand.common.JacksonFormatService;
//import fnic.prehand.common.PbAddrMapService;
//import fnic.prehand.common.ProbeAuthService;
//import fnic.prehand.esagent.passitive_measure.MakeAugment;
//
//
//public class WorkerThread{
//	/* Redis Related things */
//	private static final AgentConfig config = AgentConfig.getInstance();
//	private static final ProbeAuthService authInstance = ProbeAuthService.getInstance();
//	private static final JacksonFormatService jsonInstance = JacksonFormatService.getInstance();
//	private static final HttpMsgService httpInstance = HttpMsgService.getInstance();
//	private static final  PbAddrMapService pbAddrInstance  = PbAddrMapService.getInstance();
//	private static final Logger logger = Logger.getLogger(WorkerThread.class);
//		
//	//es配置
//	private static final String clusterName = config.getEsClusterName();
//	private static final String indexName = config.getesIndexName();
//	private static final String typeName = config.getesIndexType();
//	private static final int esBulkSize = config.getclientBulkSize();
//	private static final String pindexName = config.getPesIndexName();
//	private static final String ptypeName = config.getPesIndexType();
//	
//	//管理节点IP地址端口号
//	private static final String webIp = config.getCtrlDBIp();
//	private static final Short webPort = config.getCtrlDBPort();
//	
//	private static volatile Client client;
//	private static volatile JsonXContent jsoncontent;
//	
////	private int counter = 0;
//	//主动
//	private int probeType;
//	private int	probeId;
//	private boolean quickNeedIndex=false;
//	private PCJsonToCtrl oneCtrl;
//	private PhoneJsonToCtrl phoneCtrl;
//	private ArrayList<PCJsonToCtrl> pcCtrlList;
//	private ArrayList<PhoneJsonToCtrl> phoneCtrlList;
//	
//	private volatile BulkRequestBuilder passivecurrentRequest;
//	private volatile BulkRequestBuilder currentRequest;
//	private volatile BulkRequestBuilder phonecurrentRequest;
//
//	//被动
//	private static final List<String> flowFieldNames;
//	private static final List<String> augmentFieldNames;
//	private static final FieldTypeName[] typenames;
//	private static final int fieldsize;
//	private JsonXContentGenerator jsongenerator;
//	private ByteArrayOutputStream outstream;
//	private MakeAugment augmentmaker; //扩维
//	
//	static{
//		client = NodeBuilder.nodeBuilder().clusterName(clusterName).client(true).node().client();
//		jsoncontent = (JsonXContent) XContentFactory.xContent(XContentType.JSON);
//		
//		List<String> typenameList = config.getPfieldtypename();
//        fieldsize = typenameList.size();
//        typenames = new FieldTypeName[fieldsize];
//        
//        int counter = 0;
//        for(String key : typenameList){
//        	String[] typename = key.split("\\:");
//        	if(typename.length!=2){
//        		throw new IllegalArgumentException("[redis.csv.filed.typename] illegal!");
//        	}
//        	typenames[counter++] = new FieldTypeName(typename[0].trim(), typename[1].trim());
//        }
//        
//        flowFieldNames = config.getPflowfieldname();
//        augmentFieldNames = config.getPaugfieldname();
//		if(flowFieldNames.size() != MakeAugment.getFlowFieldNum() || 
//				augmentFieldNames.size() != MakeAugment.getAugmentFieldNum()){
//			throw new IllegalArgumentException("[p.redis.flow-augment.field] illegal!");
//		}
//	}
//	
//	public WorkerThread(){
//		outstream = new ByteArrayOutputStream();
//		try {
//			jsongenerator = (JsonXContentGenerator) jsoncontent.createGenerator(outstream);
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		
//		probeType = 0;
//		pcCtrlList = new ArrayList<PCJsonToCtrl>();
//		phoneCtrlList = new ArrayList<PhoneJsonToCtrl>();
//		passivecurrentRequest = client.prepareBulk();
//		currentRequest = client.prepareBulk();
//		phonecurrentRequest = client.prepareBulk();
//		
//		augmentmaker = new MakeAugment();
//	}
//
//	/*
//	 * 预处理单个消息
//	 */
//	public void atomProcess(String jsonitem){
//		Jsonmaps headbodymap = new Jsonmaps();
//		if(!prepareJson(jsonitem, headbodymap)){
//			return;
//		}
//
//		//将head里的内容追加到body里
//		XContentHelper.update(headbodymap.getBodymap(), headbodymap.getHeadmap());
//		if(probeType == 1){
//			currentRequest.add(client.prepareIndex(indexName, typeName).setSource(headbodymap.getBodymap()));
//			quickNeedIndex = true;
//			processBulkIfNeeded(false);
//		}else if(probeType == 2){
//			phonecurrentRequest.add(client.prepareIndex(indexName, typeName).setSource(headbodymap.getBodymap()));
//			quickNeedIndex = true;
//			processBulkIfNeeded(false);
//		}
//	}
//	
//	public void passiveAtomProcess(Flow flow){
////		passivecurrentRequest.add(client.prepareIndex(pindexName, ptypeName).setSource(csvJson(jsonitem)));
//		String json = flowAugment(flow);
//		if(json!=null){
//			passivecurrentRequest.add(client.prepareIndex(pindexName, ptypeName).setSource(json));
//			quickNeedIndex = true;
//			processBulkIfNeeded(false);
//		}
//	}
//	
//	/*
//	 * 执行批量索引，下面情况进行索引:
//	 *    1) bulk size控制
//	 *    2) 数据源空flush
//	 */
//	public void processBulkIfNeeded(Boolean force) {
//		if(!quickNeedIndex){
//			return;
//		}
//		if(probeType == 0){
//			int actionCount = passivecurrentRequest.numberOfActions();
//			if(actionCount != 0 && (actionCount > esBulkSize || force == true)){
//				try{
//					BulkResponse response = passivecurrentRequest.execute().actionGet();
//					dealBulkIndexRsp(response);
//				} catch(Exception e) {
//					logger.error("Failed to process bulk", e);
//				}
//				
//				quickNeedIndex = false;
//				passivecurrentRequest = client.prepareBulk();
//				
//				logger.info("es do bulk, size="+actionCount+", force="+force);
//			}
//		}
//		if(probeType == 1){
//			int actionCount = currentRequest.numberOfActions();
//			if(actionCount != 0 && (actionCount > esBulkSize || force == true)){
//				try{
//					BulkResponse response = currentRequest.execute().actionGet();
//					dealBulkIndexRsp(response);
//				} catch(Exception e) {
//					logger.error("Failed to process bulk", e);
//				}
//				
//				//推送管理节点
////				sendIdxResult();
////				pcCtrlList.clear();
//				quickNeedIndex = false;
//				currentRequest = client.prepareBulk();
//			}
//		}else if(probeType == 2){
//			int actionCount = phonecurrentRequest.numberOfActions();
//			if(actionCount != 0 && (actionCount > esBulkSize || force == true)){
//				try{
//					BulkResponse response = phonecurrentRequest.execute().actionGet();
//					dealBulkIndexRsp(response);
//				} catch(Exception e) {
//					logger.error("Failed to process bulk", e);
//				}
//				
//				//推送管理节点
////				sendIdxResult();
////				phoneCtrlList.clear();
//				quickNeedIndex = false;
//				phonecurrentRequest = client.prepareBulk();
//			}
//		}
//	}
//	
//	
//	private String csvJson(String csv){
//		String[] fieldvalue = csv.split(",");
//		if(fieldvalue.length!=fieldsize){
//			return null;
//		}
//		
//		String json;
//		try {
//			jsongenerator.writeStartObject();
//			for(int i=0; i<fieldsize; i++){
//				FieldTypeName tnitem = typenames[i];
//				switch(tnitem.getType()){
//				case ftString:
//					jsongenerator.writeStringField(tnitem.getName(), fieldvalue[i].trim());
//					break;
//				case ftInt:
//					jsongenerator.writeNumberField(tnitem.getName().trim(), Integer.parseInt(fieldvalue[i].trim()) );
//					break;
//				case ftLong:
//					jsongenerator.writeNumberField(tnitem.getName(), Long.parseLong(fieldvalue[i].trim()) );
//					break;
//				case ftDouble:
//					jsongenerator.writeNumberField(tnitem.getName(), Double.parseDouble(fieldvalue[i].trim()) );
//					break;
//				case ftFloat:
//					jsongenerator.writeNumberField(tnitem.getName(), Float.parseFloat(fieldvalue[i].trim()) );
//					break;
//				case ftShort:
//					jsongenerator.writeNumberField(tnitem.getName(), Short.parseShort(fieldvalue[i].trim()) );
//					break;
//				case ftBoolean:
//					jsongenerator.writeBooleanField(tnitem.getName(), Boolean.parseBoolean(fieldvalue[i].trim()));
//					break;
//				}
//			}
//			jsongenerator.writeEndObject();
//			jsongenerator.flush();
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		
//
//		json = outstream.toString();
//		outstream.reset();
//		return json;
//	}
//	
//	private String flowAugment(Flow flowdata){
//		augmentmaker.augment(flowdata);
//		if(flowdata == null){
//			logger.error("make augment fail, flow record's field_num != 19");
//			return null;
//		}
//		
//		String json;
//		try {
//			jsongenerator.writeStartObject();
//
//			for(int i=0; i<flowdata.num_oldFlow.length; i++){
//				jsongenerator.writeNumberField(flowFieldNames.get(i), flowdata.num_oldFlow[i]);
//			}
//			for(int i=0; i<flowdata.augFlow.length; i++){
//				jsongenerator.writeStringField(augmentFieldNames.get(i), flowdata.augFlow[i]);
//			}
//			
//			jsongenerator.writeEndObject();
//			jsongenerator.flush();
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		
//
//		json = outstream.toString();
//		outstream.reset();
//		return json;
//	}
//	
//	private void dealBulkIndexRsp(BulkResponse response){
//		if(response == null){
//			return;
//		}
//		if(response.hasFailures()){
//			logger.error("failed to execute" + response.buildFailureMessage());
//		}
//		if(probeType == 0){
//			return;
//		}
//		
//		Iterator<BulkItemResponse> rspitor = response.iterator();
//		int pos = 0;
//		while (rspitor.hasNext()) {
//			if(probeType == 1){
//				if(pcCtrlList.get(pos).getStatus() == ErrorCode.index_failed){
//					pos++;
//					continue;
//				}
//				BulkItemResponse rsp = rspitor.next();
//				if (!rsp.isFailed()) {
//					pcCtrlList.get(pos).setindexid(rsp.getId());
//					pcCtrlList.get(pos).setStatus(ErrorCode.index_success);
//					pcCtrlList.get(pos).setErrorno(0);
//				} else {
//					logger.error("bulk error details: position:" +pos+ ", failmsg:" + rsp.getFailureMessage());
//					pcCtrlList.get(pos).setindexid("-2"); //批量索引失败
//					pcCtrlList.get(pos).setStatus(ErrorCode.index_failed);
//					pcCtrlList.get(pos).setErrorno(ErrorCode.indexErrCode);
//				}
//			}else if(probeType == 2){
//				if(phoneCtrlList.get(pos).getindexinfo().getStatus() == ErrorCode.index_failed){
//					pos++;
//					continue;
//				}
//				BulkItemResponse rsp = rspitor.next();
//				if (!rsp.isFailed()) {
//					phoneCtrlList.get(pos).getindexinfo().setindexid(rsp.getId());
//					phoneCtrlList.get(pos).getindexinfo().setStatus(ErrorCode.index_success);
//					phoneCtrlList.get(pos).getindexinfo().setErrorno(0);
//				} else {
//					logger.error("bulk error details: position:" +pos+ ", failmsg:" + rsp.getFailureMessage());
//					phoneCtrlList.get(pos).getindexinfo().setindexid("-2"); //批量索引失败
//					phoneCtrlList.get(pos).getindexinfo().setStatus(ErrorCode.index_failed);
//					phoneCtrlList.get(pos).getindexinfo().setErrorno(ErrorCode.indexErrCode);
//				}
//			}
//			pos++;
//		}
//		sendIdxResult();
//	}
//	
//	
//	private boolean parseHead(String head, Jsonmaps maps){
//		JsonXContentParser headparser=null;
//		Map<String, Object> headmap=null;
//		boolean parseflg = true;
//		
//		try {
//			headparser = (JsonXContentParser) jsoncontent.createParser(head);
//			headmap = headparser.map();
//		} catch (IOException e) {
//			logger.error("parse head fail, reason:"+e.getMessage());
//			parseflg = false;
//		}finally{
//			if(headparser!=null){
//				headparser.close();
//			}
//			if(!parseflg){
//				return false;
//			}
//		}
//		
//		if(headmap.containsKey(DeviceId.COND_PROBE_TYPE)){
//			probeType = (Integer)headmap.get(DeviceId.COND_PROBE_TYPE);
//		}else{
//			probeType = 1;
//		}
//		probeId = (Integer)headmap.get(DeviceId.COND_PROBE_ID);
//		
//		long time = System.currentTimeMillis();
//		Date date = new Date(time);
//		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		String probeTime = dateFormat.format(date);
//		
//		if(probeType == 1){
//			int	taskId = (Integer)headmap.get(DeviceId.COND_TASK_ID);
//			int	execNum = (Integer)headmap.get(DeviceId.COND_EXEC_NUM);
//			String sessionKey = (String)headmap.get(DeviceId.COND_PROBE_SESSION);
//			oneCtrl = new PCJsonToCtrl(probeType, probeId, taskId, execNum, probeTime);
//			headmap.put("probetime", probeTime);
//			headmap.put("probeId", probeId);
//		}else if(probeType == 2){
//			phoneCtrl = new PhoneJsonToCtrl(new ObjectTestResult(probeId, probeTime));
//			headmap.remove(DeviceId.COND_PROBE_ID);  //body里边有probeId这里删之
//		}
//		
//		if(headmap.containsKey(DeviceId.COND_PROBE_SESSION)){
//			String sessionKey = (String)headmap.get(DeviceId.COND_PROBE_SESSION);
//			if(!authInstance.validSessionKey(probeId, sessionKey)&&config.getSessionKeyFlg() != 0){
//				if(probeType == 1){
//					oneCtrl.setindexid("-2");    //sessionKey校验失败
//					oneCtrl.setStatus(ErrorCode.index_failed);
//					oneCtrl.setErrorno(ErrorCode.sessionKeyErrCode);
//				}else if(probeType == 2){
//					phoneCtrl.getindexinfo().setindexid("-2");    //sessionKey校验失败
//					phoneCtrl.getindexinfo().setStatus(ErrorCode.index_failed);
//					phoneCtrl.getindexinfo().setErrorno(ErrorCode.sessionKeyErrCode);
//				}
//				return false;
//			}
//		}
//		headmap.remove(DeviceId.COND_PROBE_SESSION);
//		// probetime格式化
////		long time = System.currentTimeMillis();
////		Date date = new Date(time);
////		DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
////		String probeTime = dateFormat.format(date);
//		
//		//probetype,probetype冗余，兼容之前的手机发布版本
//		headmap.put("probeType", probeType);
//		headmap.put("probetype", probeType);
//		headmap.put("probeid", probeId);
//		maps.setHeadmap(headmap);
//		return true;
//	}
//	
//
//	private boolean parseBody(String body, Jsonmaps maps){
//		JsonXContentParser bodyparser=null;
//		Map<String, Object> bodymap=null;
//		boolean parseflg = true;
//		
//		try {
//			bodyparser = (JsonXContentParser) jsoncontent.createParser(body);
//			bodymap = bodyparser.map();
//		} catch (IOException e) {
//			logger.error("parse body fail, reason:"+e.getMessage());
//			parseflg = false;
//		}finally{
//			if(bodyparser!=null){
//				bodyparser.close();
//			}
//			if(!parseflg){
//				if(probeType == 1){
//					oneCtrl.setindexid("-1");   //测试结果json解析失败
//					oneCtrl.setStatus(ErrorCode.index_failed);
//					oneCtrl.setErrorno(ErrorCode.jsonErrCode);
//				}else if(probeType == 2){
//					phoneCtrl.getindexinfo().setindexid("-1");
//					phoneCtrl.getindexinfo().setStatus(ErrorCode.index_failed);
//					phoneCtrl.getindexinfo().setErrorno(ErrorCode.jsonErrCode);
//				}
//				return false;
//			}
//		}
//		
//		if(bodymap == null){
//			return false;
//		}
//		
//		if(probeType == 1){
//			dealProbeReq(bodymap);
//			pcCtrlList.add(oneCtrl);
//		}
//		else if(probeType == 2){
//			dealPhoneReq(bodymap);
//			phoneCtrlList.add(phoneCtrl);
//		}
//
//		maps.setBodymap(bodymap);
//		return true;
//	}
//	
//	private void dealProbeReq(Map<String, Object> maps) {
//		// 获取地区信息，本地获取不成功到管理节点获取
//		ProbeAddress pbaddr = null;
//		if (pbAddrInstance.containItem(probeId)) {
//			pbaddr = pbAddrInstance.getProbeAddr(probeId);
//		} else {
//			pbaddr = getCtrlPbAdres(probeId);
//			if (pbaddr != null) {
//				pbAddrInstance.putItem(probeId, pbaddr);
//			}
//		}
//
//		if (pbaddr != null) {
//			maps.put("countryid", pbaddr.getCountry());
//			maps.put("provinceid", pbaddr.getProvinceId());
//			maps.put("cityid", pbaddr.getCityId());
//			maps.put("areaid", pbaddr.getAreaId());
//			maps.put("address", pbaddr.getAddress());
//		}
//	}
//	
//	/*
//	 * 手机请求扩维
//	 */
//	private void dealPhoneReq(Map<String, Object> maps) {
//		RadioCGI cgi = new RadioCGI();
//		SubjectDescript subDescript = new SubjectDescript();
//		//这里是个坑，从body里获取probeId，先不管了
//		if (maps.containsKey(DeviceId.COND_PROBE_ID)) {
//			subDescript.setprobeid((Integer) maps.get(DeviceId.COND_PROBE_ID));
//		}
//		if (maps.containsKey("netquality")) {
//			subDescript.setnetquality((Integer) maps.get("netquality"));
//		}
//		if (maps.containsKey("callquality")) {
//			subDescript.setcallquality((Integer) maps.get("callquality"));
//		}			
//		if (maps.containsKey("feedback")) {
//			subDescript.setfeedback((String) maps.get("feedback"));
//		}
//
//		if(maps.containsKey("pos")){
//			if(maps.get("pos") instanceof Map){
//				Map<String, Double> posMap = (Map<String, Double>)maps.get("pos");
//				double dblat = posMap.get("lat");
//				double dblon = posMap.get("lon");
//				subDescript.setlatitude(dblat);
//				subDescript.setlongitude(dblon);
//				maps.put("latitude", dblat);
//				maps.put("longitude", dblon);
//			}
//		}
//		
//		
////		if (maps.containsKey("radius")) {
////			if (maps.get("radius") instanceof Integer) {
////				subDescript
////						.setRadius((double) (Integer) maps.get("radius"));
////			} else if (maps.get("radius") instanceof Float) {
////				subDescript.setRadius((double) (Float) maps.get("radius"));
////			} else {
////				subDescript.setRadius((Double) maps.get("radius"));
////			}
////		}
//		
//		if(maps.containsKey("position")){
//			if(maps.get("position") instanceof Map){
//				Map<String, String> positionMap = (Map<String, String>)maps.get("position");
//				subDescript.setAddress(positionMap.get("address"));
//			}
//		}
//		
//		if(maps.containsKey("bs")){
//			if(maps.get("bs") instanceof Map){
//				Map<String, Integer> bsMap = (Map<String, Integer>)maps.get("bs");
//				cgi.setA(bsMap.get("a"));
//				cgi.setB(bsMap.get("b"));
//				cgi.setC(bsMap.get("c"));
//				cgi.setT(bsMap.get("t"));
//				
//				// 获取手机基站的经纬度位置信息
////				boolean posfg = getCGIPosbyGpsspg();
////				boolean posfg = getCGIPosbyCellid();
//				boolean posfg = getCGIPosbyJuHe(cgi);
//				if (posfg) {
//					Map<String, Object> baseposMap = new HashMap<String, Object>();
//					baseposMap.put("lat", cgi.getLatitude());
//					baseposMap.put("lon", cgi.getLongitude());
//					maps.put("baseposition", baseposMap);
//				}
//			}
//		}
//		
//		//融合100环境，冗余下列字段
//		if(maps.containsKey("ping")){
//			if(maps.get("ping") instanceof Map){
//				Map<String, Object> pingMap = (Map<String, Object>)maps.get("ping");
//				maps.put("pingdelayavg", pingMap.get("mean_rtt_ms"));
//				maps.put("packetloss", pingMap.get("packet_loss"));
//			}
//		}
//		
//		
//		if(maps.containsKey("downlink")){
//			if(maps.get("downlink") instanceof Map){
//				Map<String, Object> downMap = (Map<String, Object>)maps.get("downlink");
//				maps.put("downbandwith", downMap.get("avg_speed"));
//			}
//		}
//		
//		if(maps.containsKey("uplink")){
//			if(maps.get("uplink") instanceof Map){
//				Map<String, Object> upMap = (Map<String, Object>)maps.get("uplink");
//				maps.put("upbandwith", upMap.get("avg_speed"));
//			}
//		}
//
//		phoneCtrl.setdescription(subDescript);
//	}
//	
//	/*
//	 * 通过管理节点获取探针的位置，省市区信息 
//	 */
//	private ProbeAddress getCtrlPbAdres(int probeId)
//	{
//		ProbeAddress address = null;
//		String adrs = "http://"+config.getPbAddrIp()+":"+config.getPbAddrPort()+"/business/query?method=queryLocation&probeId="+probeId;
//		StringBuilder rspbuilder = new StringBuilder();
//		
//		//向管理节点发送http消息获得sk timeout
//		boolean succeedFg = httpInstance.sendGetMsg(true, adrs, rspbuilder);
//		if(succeedFg){
//			if(rspbuilder.length()>0){
//				String httprsp = rspbuilder.toString(); //验证一下是否为json格式
//				address = (ProbeAddress)jsonInstance.String2Obj(httprsp, "fnic.jsontrans.ProbeAddress");
//			}
//			else{
//				logger.error("[getPbAdres]Get Http Rsp length is zero !!");
//			}
//		}else{
//			logger.error("[getPbAdres]Get Http Rsp Code error!!");
//		}
//		return address;
//	}
//	
//	private boolean getCGIPosbyJuHe(RadioCGI cgi){
//		String urlPath = "http://58.215.185.154:8080/DemoServer/";
//		int a = cgi.getA();
//		int b = cgi.getB();
//		int c = cgi.getC();
//		int t = cgi.getT();
//		
//		//移动 联通
//		if(t==0 || t==1){
//			urlPath += "cellid_search?"+"mnc="+a+"&lac="+b+"&cell="+c+"&hex=0"; 
//		}
//		//电信
//		else if(t == 2){
//			urlPath += "cdma_search?"+"sid="+a+"&nid="+b+"&bid="+c+"&hex=0"; 
//		}
//		else{
//			return false;
//		}
//		StringBuilder rspbuilder = new StringBuilder();
//		boolean getPosflg = httpInstance.sendGetMsg(true, urlPath, rspbuilder);
//		if(!getPosflg){
//			logger.error("send www.juhe.com error!");
//		}
//		else{
//			String httprsp = rspbuilder.toString();
//			if(t == 2){
//				JHCdmaResult jhcdmaresult = (JHCdmaResult)jsonInstance.String2Obj(httprsp, "fnic.jsontrans.JHCdmaResult");
//				if(jhcdmaresult!=null && jhcdmaresult.getResultcode().trim().toLowerCase().equals("2000")){
//					cgi.setLatitude(Double.parseDouble(jhcdmaresult.getResult().getLat()));
//					cgi.setLongitude(Double.parseDouble(jhcdmaresult.getResult().getLon()));
//					cgi.setAddress(jhcdmaresult.getResult().getAddress());
//					return true;
//				}else{
//					logger.error("get cdma rsp, but error!");
//				}
//			}else{
//				JHCellIdResult jhcellidresult = (JHCellIdResult)jsonInstance.String2Obj(httprsp, "fnic.jsontrans.JHCellIdResult");
//				if(jhcellidresult!=null && jhcellidresult.getResultcode().trim().toLowerCase().equals("2000")){
//					cgi.setLatitude(Double.parseDouble(jhcellidresult.getResult().getLat()));
//					cgi.setLongitude(Double.parseDouble(jhcellidresult.getResult().getLon()));
//					cgi.setAddress(jhcellidresult.getResult().getAddress());
//					return true;
//				}else{
//					logger.error("get 3gpp rsp, but error!");
//				}
//			}
//
//		}
//		return false;
//	}
//	
//	
//	/*
//	 * redis接收数据 json格式解析
//	 * sessionKey校验
//	 */
//	private boolean prepareJson(String item, Jsonmaps maps){
//		String[] jsonrecords = item.split("\\|", 2);
//		if(jsonrecords.length != 2){
//			logger.error("get redis record illegal, no josn|json");
//			return false;
//		}
//		
//		if(!parseHead(jsonrecords[0], maps)){
//			sendIdxResult();
//			return false;
//		}
//
//		if(!parseBody(jsonrecords[1], maps)){
//			sendIdxResult();
//			return false;
//		}
//		
//		return true;
//	}
//
//	
//	/*
//	 * 推送索引结果(探针)至管理节点
//	 */
//	private boolean sendIdxResult(){
//		String ctrlURL;
//		String messageToCtrl;
//		
//		//向Web发送探针的索引结果
//		if(probeType == 1){
//			ctrlURL = "http://" + webIp + ":" + webPort+ "/es/taskindex";
//			messageToCtrl = jsonInstance.Obj2String(pcCtrlList);
//			pcCtrlList.clear();
//		}
//		//向Web发送手机的索引结果
//		else if(probeType == 2){
//			ctrlURL = "http://" + webIp + ":" + webPort+ "/es/mobileindexdesc";
//			messageToCtrl = jsonInstance.Obj2String(phoneCtrlList);
//			phoneCtrlList.clear();
//		}else{
//			return false;
//		}
//		StringBuilder rspbuilder = new StringBuilder();
////		boolean succeedFg = true;
//		boolean succeedFg = httpInstance.sendPostMsg(false,ctrlURL, messageToCtrl, rspbuilder);
//		//推送数据至管理节点失败--推送索引消息至管理节点失败
//		if(!succeedFg){
//			logger.error("notice ctrl fail, message:"+messageToCtrl);
//		}else{
//			logger.info("notice ctrl succeed, message:"+messageToCtrl);
//		}
//		
//		return succeedFg;
//	}
//
//	public class Jsonmaps{
//		public Map<String, Object> getHeadmap() {
//			return headmap;
//		}
//		public Map<String, Object> getBodymap() {
//			return bodymap;
//		}
//		public void setHeadmap(Map<String, Object> headmap) {
//			this.headmap = headmap;
//		}
//		public void setBodymap(Map<String, Object> bodymap) {
//			this.bodymap = bodymap;
//		}
//		
//		Map<String, Object> headmap;
//		Map<String, Object> bodymap;
//	}
//	
//	private static class RadioCGI{
//		public int getA() {
//			return a;
//		}
//		public int getB() {
//			return b;
//		}
//		public int getC() {
//			return c;
//		}
//		public int getT() {
//			return t;
//		}
//		public void setA(int a) {
//			this.a = a;
//		}
//		public void setB(int b) {
//			this.b = b;
//		}
//		public void setC(int c) {
//			this.c = c;
//		}
//		public void setT(int t) {
//			this.t = t;
//		}
//		
//		public double getLongitude() {
//			return longitude;
//		}
//		public void setLongitude(double longitude) {
//			this.longitude = longitude;
//		}
//		public double getLatitude() {
//			return latitude;
//		}
//		public void setLatitude(double latitude) {
//			this.latitude = latitude;
//		}
//		
//		public String getAddress() {
//			return address;
//		}
//		public void setAddress(String address) {
//			this.address = address;
//		}
//		public String getZonecode() {
//			return zonecode;
//		}
//		public void setZonecode(String zonecode) {
//			this.zonecode = zonecode;
//		}
//
//		int a;      //mnc   sid
//		int b;      //lac   nid
//		int c;      //cellid bid
//		int t;      // 0:移动    1:联通     2:电信
//		
//		double latitude; //纬度
//		double longitude; //经度
//		String address;
//		String zonecode;
//	}
//	
////	public String getjsonStringFromFile(String fn){
////		int line = 0;
////		StringBuffer jsonbuff = new StringBuffer();
////		BufferedReader reader = null;
////		File file = new File(fn);
////		try {
////			reader = new BufferedReader(new FileReader(file));
////			String tempString = "";
////			
////			// 一次读入一行，直到读入null为文件结束
////			while ((tempString = reader.readLine()) != null) {
////				// 显示行号
////				jsonbuff.append(tempString.trim());
////				line++;
////			}
////			reader.close();
////		} catch (IOException e) {
////			e.printStackTrace();
////		} finally {
////			if (reader != null) {
////				try {
////					reader.close();
////				} catch (IOException e1) {
////				}
////			}
////		}	
////		return jsonbuff.toString();
////	}
////	
////	public static void main(String[] args){
////		WorkerThread worker = new WorkerThread();
////		String head = "{\"probeid\":1, \"taskid\":12, \"sessionKey\":\"23ea2efa2fa\"}";
////		String body = "{\"host\":\"www.baidu.com\",\"delay\":12.22}";
////		
////		String jsonarr = worker.getjsonStringFromFile("f:\\activepass.json");
////		worker.atomProcess(jsonarr);
////	}
//}
